﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Core;
using System.Data.SqlClient;

namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsT_Imp_Importaciones_Doc_RelacionadosDAO
    {
        private AutomotrizEntities ContextDeObjs = new AutomotrizEntities();

        //public IEnumerable<Object> Lista(int id_org_vta, string nro_pedido)
        //{
        //    IEnumerable<Object> list = new List<Object>();
        //    try
        //    {

        //        var q = from c in ContextDeObjs.T_IMP_IMPORTACIONES_DOC_RELACIONADOS
        //                from td in ContextDeObjs.T_MAE_TABLA_GENERAL_DET
        //                from ov in ContextDeObjs.TD_ORG_VTA

        //                where c.ID_ORG_VTA == ov.ID_ORG_VTA && c.ID_TIPO_DOC_SEG == td.ID_GENERAL_DET &&
        //                c.ID_ORG_VTA == id_org_vta && c.NUM_PEDIDO == nro_pedido

        //                select new
        //                {
        //                    c.ID_T_IMPORTACIONES_RELACION,
        //                    c.ID_ORG_VTA,
        //                    c.NUM_PEDIDO,
        //                    c.ID_TIPO_DOC_SEG,
        //                    c.COD_NRO_DOCUMENTO,
        //                    td.DES_LARGA,
        //                    ov.DES_ORG_VTA
        //                };
        //        list = q.ToList();
        //    }
        //    catch (Exception)
        //    {
        //        list = null;
        //    }

        //    return list;

        //}

        public List<IMPORTACIONES_DOC_RELACIONADOS> ListarDocumentos(int id_org_vta, int idCab)
        {
            List<IMPORTACIONES_DOC_RELACIONADOS> list = new List<IMPORTACIONES_DOC_RELACIONADOS>();
            try
            {
                var q = from c in ContextDeObjs.T_IMP_IMPORTACIONES_DOC_RELACIONADOS
                        from td in ContextDeObjs.T_MAE_TABLA_GENERAL_DET
                        join ca in ContextDeObjs.T_IMP_IMPORTACION_CAB on c.ID_IMP_IMPORTACION_CAB equals ca.ID_IMP_IMPORTACION_CAB  
                        join o in ContextDeObjs.TD_ORG_VTA on ca.ID_ORG_VTA equals o.ID_ORG_VTA
                        where  c.ID_TIPO_DOC_SEG == td.ID_GENERAL_DET &&
                        ca.ID_ORG_VTA == id_org_vta && c.ID_IMP_IMPORTACION_CAB == idCab
                        select new IMPORTACIONES_DOC_RELACIONADOS
                        {
                            ID_T_IMPORTACIONES_RELACION = c.ID_T_IMPORTACIONES_RELACION,
                            NUM_PEDIDO = ca.NUM_PEDIDO,
                            DES_ORG_VTA = o.DES_ORG_VTA,
                            DES_LARGA = td.DES_LARGA,
                            COD_NRO_DOCUMENTO = c.COD_NRO_DOCUMENTO,
                            ID_TIPO_DOC_SEG = c.ID_TIPO_DOC_SEG

                        };
                list = q.ToList();
            }
            catch (Exception)
            {
                list = null;
            }

            return list;

        }



        public List<IMPORTACIONES_DOC_RELACIONADOS> ListarDocumentos2(int id_org_vta, String nroPedidoOrgi)
        {
            List<IMPORTACIONES_DOC_RELACIONADOS> list = new List<IMPORTACIONES_DOC_RELACIONADOS>();
            try
            {
                var q = from c in ContextDeObjs.T_IMP_IMPORTACIONES_DOC_RELACIONADOS
                        from td in ContextDeObjs.T_MAE_TABLA_GENERAL_DET
                        join ca in ContextDeObjs.T_IMP_IMPORTACION_CAB on c.ID_IMP_IMPORTACION_CAB equals ca.ID_IMP_IMPORTACION_CAB
                        join o in ContextDeObjs.TD_ORG_VTA on ca.ID_ORG_VTA equals o.ID_ORG_VTA
                        where c.ID_TIPO_DOC_SEG == td.ID_GENERAL_DET &&
                        ca.ID_ORG_VTA == id_org_vta && ca.NUM_PEDIDO_ORIG == nroPedidoOrgi
                        select new IMPORTACIONES_DOC_RELACIONADOS
                        {
                            ID_T_IMPORTACIONES_RELACION = c.ID_T_IMPORTACIONES_RELACION,
                            NUM_PEDIDO = ca.NUM_PEDIDO,
                            DES_ORG_VTA = o.DES_ORG_VTA,
                            DES_LARGA = td.DES_LARGA,
                            COD_NRO_DOCUMENTO = c.COD_NRO_DOCUMENTO,
                            ID_TIPO_DOC_SEG = c.ID_TIPO_DOC_SEG,
                            ID_IMP_IMPORTACION_CAB=ca.ID_IMP_IMPORTACION_CAB

                        };
                list = q.ToList();
            }
            catch (Exception)
            {
                list = null;
            }

            return list;

        }

        public bool Insertar(T_IMP_IMPORTACIONES_DOC_RELACIONADOS Obj)
        {
            try
            {
                ContextDeObjs.AddObject("T_IMP_IMPORTACIONES_DOC_RELACIONADOS", Obj);
                ContextDeObjs.SaveChanges();
            }
            catch (Exception e)
            {
                Globales.msjSql = string.Empty;
                Globales.msjSql = e.InnerException.Message;
                return false;
            }
            return true;
        }

        public bool Insertar2(List<T_IMP_IMPORTACIONES_DOC_RELACIONADOS> Obj)
        {
            try
            {
                foreach (T_IMP_IMPORTACIONES_DOC_RELACIONADOS doc in Obj)
                {
                    ContextDeObjs.AddObject("T_IMP_IMPORTACIONES_DOC_RELACIONADOS", doc);
                }

                ContextDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;
                throw;
            }
            return true;
        }

        //public int Actualizar(int ID_T_IMPORTACIONES_RELACION, int ID_ORG_VTA, string NUM_PEDIDO, int ID_TIPO_DOC, int COD_NRO_DOCUMENTO)
        //{
        //    try
        //    {
        //        var q = (from c in ContextDeObjs.T_IMP_IMPORTACIONES_DOC_RELACIONADOS
        //                 where c.ID_T_IMPORTACIONES_RELACION == ID_T_IMPORTACIONES_RELACION && c.ID_ORG_VTA == ID_ORG_VTA
        //                 select c).FirstOrDefault();
        //        q.NUM_PEDIDO = NUM_PEDIDO;
        //        q.ID_TIPO_DOC_SEG = ID_TIPO_DOC;
        //        q.COD_NRO_DOCUMENTO = COD_NRO_DOCUMENTO;
        //        int s = ContextDeObjs.SaveChanges();
        //        return s;
        //    }
        //    catch (Exception e)
        //    {
        //        Globales.msjSql = string.Empty;
        //        Globales.msjSql = e.InnerException.Message;
        //        return 0;

        //    }
        //}

        public bool Eliminar(T_IMP_IMPORTACIONES_DOC_RELACIONADOS obj)
        {
            try
            {
                ContextDeObjs.AttachTo("T_IMP_IMPORTACIONES_DOC_RELACIONADOS", obj);
                ContextDeObjs.DeleteObject(obj);
                ContextDeObjs.SaveChanges();
            }
            catch (Exception e)
            {
                Globales.msjSql = string.Empty;
                Globales.msjSql = e.InnerException.Message;
                return false;
            }
            return true;
        }

        public IEnumerable<Object> listaTipoDocumento()
        {
            IEnumerable<Object> list = new List<Object>();
            try
            {
                var q = from c in ContextDeObjs.T_MAE_TABLA_GENERAL_CAB
                        from d in ContextDeObjs.T_MAE_TABLA_GENERAL_DET
                        where c.ID_GENERAL_CAB == d.ID_GENERAL_CAB && c.NOM_TABLA == "T_IMP_IMPORTACION_DOC_SEG" && d.IND_ACTIVO == true && c.IND_ACTIVO == true
                        select new { d.ID_GENERAL_DET, d.DES_LARGA };
                list = q.ToList();

            }
            catch (Exception)
            {
                list = null;
                throw;

            }
            return list;
        }

        public bool EliminarDocumentos(int? intIdOrgVta, String strNumPedido)
        {
            Boolean boolEliminar = true;
            try
            {
                String strSql = String.Format("DELETE FROM T_IMP_IMPORTACIONES_DOC_RELACIONADOS WHERE ID_ORG_VTA = {0} AND NUM_PEDIDO = '{1}'", intIdOrgVta, strNumPedido);
                ContextDeObjs.ExecuteStoreCommand(strSql);
                boolEliminar = true;
            }
            catch (SqlException ex)
            {
                Globales.msjSql = ex.Message;
                boolEliminar = false;
                throw;
            }
            catch (Exception)
            {
                boolEliminar = false;
                throw;
            }
            return boolEliminar;
        }


        public bool EliminarDocumentos2(int? intIdOrgVta, int idCab)
        {
            Boolean boolEliminar = true;
            try
            {
                String strSql = String.Format("DELETE FROM T_IMP_IMPORTACIONES_DOC_RELACIONADOS WHERE  ID_IMP_IMPORTACION_CAB = {0}", idCab);
                ContextDeObjs.ExecuteStoreCommand(strSql);
                boolEliminar = true;
            }
            catch (SqlException ex)
            {
                Globales.msjSql = ex.Message;
                boolEliminar = false;
                throw;
            }
            catch (Exception)
            {
                boolEliminar = false;
                throw;
            }
            return boolEliminar;
        }




        public int RetornaIdCab(String num_pedido,int id_org_vta) {
            try
            {
                String sql = String.Format("SELECT tiic.ID_IMP_IMPORTACION_CAB FROM T_IMP_IMPORTACION_CAB tiic WHERE tiic.NUM_PEDIDO='{0}' and ID_ORG_VTA={1}", num_pedido,id_org_vta);
                var q = ContextDeObjs.ExecuteStoreQuery<int>(sql);
                return q.ToList().FirstOrDefault();      
            }
            catch (Exception)
            {

                return 0;
            }
          
        }



        //public int RetornaNumPedido(int id_org_vta,int idCab)
        //{
        //    try
        //    {
        //        String sql = String.Format("SELECT tiic.NUM_PEDIDO FROM T_IMP_IMPORTACION_CAB tiic WHERE tiic.ID_IMP_IMPORTACION_CAB={0} and ID_ORG_VTA={1}", num_pedido, id_org_vta);
        //        var q = ContextDeObjs.ExecuteStoreQuery<int>(sql);
        //        return q.ToList().FirstOrDefault();
        //    }
        //    catch (Exception)
        //    {

        //        return 0;
        //    }

        //}


    }
}
